home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / AIncludes / FixMath.a < prev    next >
Encoding:
Text File  |  1998-08-17  |  6.6 KB  |  286 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        FixMath.a
  3. ;
  4. ;    Contains:    Fixed Math Interfaces.
  5. ;
  6. ;    Version:    Technology:    Mac OS 8
  7. ;                Release:    Universal Interfaces 3.2
  8. ;
  9. ;    Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__FIXMATH__') = 'UNDEFINED' THEN
  18. __FIXMATH__ SET 1
  19.  
  20.     IF &TYPE('__MACTYPES__') = 'UNDEFINED' THEN
  21.     include 'MacTypes.a'
  22.     ENDIF
  23.  
  24.  
  25.  
  26.  
  27. fixed1                            EQU        $00010000
  28. fract1                            EQU        $40000000
  29. positiveInfinity                EQU        $7FFFFFFF
  30. negativeInfinity                EQU        $80000000
  31. ;    FixRatio, FixMul, and FixRound were previously in ToolUtils.h
  32. ;
  33.  
  34. ;
  35. ; pascal Fixed FixRatio(short numer, short denom)
  36. ;
  37.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  38.         _FixRatio:    OPWORD    $A869
  39.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  40.         IMPORT_CFM_FUNCTION FixRatio
  41.     ENDIF
  42.  
  43. ;
  44. ; pascal Fixed FixMul(Fixed a, Fixed b)
  45. ;
  46.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  47.         _FixMul:    OPWORD    $A868
  48.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  49.         IMPORT_CFM_FUNCTION FixMul
  50.     ENDIF
  51.  
  52. ;
  53. ; pascal short FixRound(Fixed x)
  54. ;
  55.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  56.         _FixRound:    OPWORD    $A86C
  57.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  58.         IMPORT_CFM_FUNCTION FixRound
  59.     ENDIF
  60.  
  61.  
  62. ;
  63. ; pascal Fract Fix2Frac(Fixed x)
  64. ;
  65.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  66.         _Fix2Frac:    OPWORD    $A841
  67.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  68.         IMPORT_CFM_FUNCTION Fix2Frac
  69.     ENDIF
  70.  
  71. ;
  72. ; pascal long Fix2Long(Fixed x)
  73. ;
  74.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  75.         _Fix2Long:    OPWORD    $A840
  76.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  77.         IMPORT_CFM_FUNCTION Fix2Long
  78.     ENDIF
  79.  
  80. ;
  81. ; pascal Fixed Long2Fix(long x)
  82. ;
  83.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  84.         _Long2Fix:    OPWORD    $A83F
  85.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  86.         IMPORT_CFM_FUNCTION Long2Fix
  87.     ENDIF
  88.  
  89. ;
  90. ; pascal Fixed Frac2Fix(Fract x)
  91. ;
  92.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  93.         _Frac2Fix:    OPWORD    $A842
  94.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  95.         IMPORT_CFM_FUNCTION Frac2Fix
  96.     ENDIF
  97.  
  98. ;
  99. ; pascal Fract FracMul(Fract x, Fract y)
  100. ;
  101.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  102.         _FracMul:    OPWORD    $A84A
  103.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  104.         IMPORT_CFM_FUNCTION FracMul
  105.     ENDIF
  106.  
  107. ;
  108. ; pascal Fixed FixDiv(Fixed x, Fixed y)
  109. ;
  110.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  111.         _FixDiv:    OPWORD    $A84D
  112.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  113.         IMPORT_CFM_FUNCTION FixDiv
  114.     ENDIF
  115.  
  116. ;
  117. ; pascal Fract FracDiv(Fract x, Fract y)
  118. ;
  119.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  120.         _FracDiv:    OPWORD    $A84B
  121.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  122.         IMPORT_CFM_FUNCTION FracDiv
  123.     ENDIF
  124.  
  125. ;
  126. ; pascal Fract FracSqrt(Fract x)
  127. ;
  128.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  129.         _FracSqrt:    OPWORD    $A849
  130.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  131.         IMPORT_CFM_FUNCTION FracSqrt
  132.     ENDIF
  133.  
  134. ;
  135. ; pascal Fract FracSin(Fixed x)
  136. ;
  137.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  138.         _FracSin:    OPWORD    $A848
  139.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  140.         IMPORT_CFM_FUNCTION FracSin
  141.     ENDIF
  142.  
  143. ;
  144. ; pascal Fract FracCos(Fixed x)
  145. ;
  146.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  147.         _FracCos:    OPWORD    $A847
  148.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  149.         IMPORT_CFM_FUNCTION FracCos
  150.     ENDIF
  151.  
  152. ;
  153. ; pascal Fixed FixATan2(long x, long y)
  154. ;
  155.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  156.         _FixATan2:    OPWORD    $A818
  157.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  158.         IMPORT_CFM_FUNCTION FixATan2
  159.     ENDIF
  160.  
  161. ;    Frac2X, Fix2X, X2Fix, and X2Frac translate to and from
  162. ;    the floating point type "extended" (that's what the X is for).
  163. ;    On the original Mac this was 80-bits and the functions could be
  164. ;    accessed via A-Traps.  When the 68881 co-processor was added,
  165. ;    it used 96-bit floating point types, so the A-Traps could not 
  166. ;    be used.  When PowerPC was added, it used 64-bit floating point
  167. ;    types, so yet another prototype was added.
  168. ;
  169.  
  170. ;
  171. ; pascal extended Frac2X(Fract x)
  172. ;
  173.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  174.         _Frac2X:    OPWORD    $A845
  175.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  176.         IMPORT_CFM_FUNCTION Frac2X
  177.     ENDIF
  178.  
  179. ;
  180. ; pascal extended Fix2X(Fixed x)
  181. ;
  182.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  183.         _Fix2X:    OPWORD    $A843
  184.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  185.         IMPORT_CFM_FUNCTION Fix2X
  186.     ENDIF
  187.  
  188. ;
  189. ; pascal Fixed X2Fix(extended x)
  190. ;
  191.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  192.         _X2Fix:    OPWORD    $A844
  193.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  194.         IMPORT_CFM_FUNCTION X2Fix
  195.     ENDIF
  196.  
  197. ;
  198. ; pascal Fract X2Frac(extended x)
  199. ;
  200.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  201.         _X2Frac:    OPWORD    $A846
  202.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  203.         IMPORT_CFM_FUNCTION X2Frac
  204.     ENDIF
  205.  
  206. ;  QuickTime 3.0 makes these Wide routines available on other platforms
  207.     IF TARGET_CPU_PPC ++ ¬ TARGET_OS_MAC THEN
  208. ;
  209. ; extern short WideCompare(const wide *target, const wide *source)
  210. ;
  211.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  212.         IMPORT_CFM_FUNCTION WideCompare
  213.     ENDIF
  214.  
  215. ;
  216. ; extern WidePtr WideAdd(wide *target, const wide *source)
  217. ;
  218.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  219.         IMPORT_CFM_FUNCTION WideAdd
  220.     ENDIF
  221.  
  222. ;
  223. ; extern WidePtr WideSubtract(wide *target, const wide *source)
  224. ;
  225.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  226.         IMPORT_CFM_FUNCTION WideSubtract
  227.     ENDIF
  228.  
  229. ;
  230. ; extern WidePtr WideNegate(wide *target)
  231. ;
  232.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  233.         IMPORT_CFM_FUNCTION WideNegate
  234.     ENDIF
  235.  
  236. ;
  237. ; extern WidePtr WideShift(wide *target, long shift)
  238. ;
  239.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  240.         IMPORT_CFM_FUNCTION WideShift
  241.     ENDIF
  242.  
  243. ;
  244. ; extern unsigned long WideSquareRoot(const wide *source)
  245. ;
  246.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  247.         IMPORT_CFM_FUNCTION WideSquareRoot
  248.     ENDIF
  249.  
  250. ;
  251. ; extern WidePtr WideMultiply(long multiplicand, long multiplier, wide *target)
  252. ;
  253.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  254.         IMPORT_CFM_FUNCTION WideMultiply
  255.     ENDIF
  256.  
  257. ;  returns the quotient 
  258. ;
  259. ; extern long WideDivide(const wide *dividend, long divisor, long *remainder)
  260. ;
  261.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  262.         IMPORT_CFM_FUNCTION WideDivide
  263.     ENDIF
  264.  
  265. ;  quotient replaces dividend 
  266. ;
  267. ; extern WidePtr WideWideDivide(wide *dividend, long divisor, long *remainder)
  268. ;
  269.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  270.         IMPORT_CFM_FUNCTION WideWideDivide
  271.     ENDIF
  272.  
  273. ;
  274. ; extern WidePtr WideBitShift(wide *src, long shift)
  275. ;
  276.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  277.         IMPORT_CFM_FUNCTION WideBitShift
  278.     ENDIF
  279.  
  280.     ENDIF
  281.  
  282.     ENDIF ; __FIXMATH__ 
  283.  
  284.